EclipseでScalaやる場合の注意点
概要
自分だけではなく、弊社の他の人も踏んだバグがちらちら重複してきた感があるので、
まとめてみた。
対象環境は、Scala IDE 2.0.2 + Eclipse 3.7.2 + Mac OS 10.8.2
ちなみに、どれも「完全再現できない」感じ。
時々発生する。
Eclipse+Java+Scala複合の問題
Javaで定義した定数の内容をScalaからは認識できないことがある
Java側のクラス情報の更新が、Scala側まで伝わらない模様。
たとえばJava側で
static final String a = "a";
とか書いてて、scala側から使用していると、
println(a)//→ "a"
Javaの方で定数の値を変更しても、
static final String a = "b";
Scala側で
println(a)//→ "a"
の、まま、という。
クリーニングは無意味。
Eclipseの再起動で直る。
気づきにくいのが一番辛い。
Eclipse+Scala単独の問題
object/classファイルを作成後、class/objectに切り替えると、ビルドエラーが出ることがある
Scalaプラグインを入れたEclipseのウィザードから、
object/classを作ったあと、内容編集でobject → class とかに編集すると、
ビルド時/実行時にエラーになる。
クリーニング効かない。
Eclipseの再起動で直る。
Scalaのコンストラクタの引数をあとから足すと、new演算子にエラー表記が出っぱなしになることがある
・Scalaのコンストラクト時の引数を、適当なタイミングで足すと、new演算子がエラー出す事が有る。
・newするコードが既にある
val a = new A("name")
状態で、Aのコンストラクタ引数を加えると、
class A (name : String) = {}
→
class A (name : String, value : String) = {}
val a = new A("name", "val")
newが、エラーを吐くようになる。
クリーニングも再起動も効かない。
エラーを起している行そのものを一度消して、書き直す(カット&ペースト可)
とかやると、エラーが消える。
エラーのデータが残ったままになってるっぽい。
メモまでに。
ちなみにScalaIDEの中に入ってるsbtとかは、プラグインのversion見ようとしたり、エラーが発生したりするとチラチラ見れる。